<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        /*
        reduce()
        Accumulator(arr) 累计器
        Current Value(cur) 当前值
        Current Index(idx) 当前索引
        Source Array(src)原数组
        arr.reduce(callback(accumulator,currentValue[,index[,array]])[,initialValue])
        */

        //第一种 如果没有给这个reduce初始值 那么默认就会去 数组的第一项作为初始值 第一次当前值就是数组的第二项
        let arr = [1, 2, 3, 5, 6, 7]
        let add = arr.reduce((preVal, curVal, curIndex, sourceArray) => {
            /*  alert('初始值: ' + preVal)
             alert('当前值: ' + curVal)
             alert('当前的索引: ' + curIndex)
             alert('原数组: ' + sourceArray) */
            return preVal + curVal
        })
        console.log(add)

        //第二种 直接写初始值 如果初始值 那么preVal就是你给的初始值
        let add1 = arr.reduce((preVal, curVal) => {
            return preVal + curVal
        }, 100)
        console.log(add1)
    </script>
</body>

</html>